"""
Python运算符
学习目标：
1. 掌握算术运算符
2. 掌握比较运算符
3. 掌握逻辑运算符
4. 掌握赋值运算符
5. 理解运算符的优先级
"""

# ==================== 1. 算术运算符 ====================
print("=" * 50)
print("1. 算术运算符")
print("=" * 50)

a = 10
b = 3

# 加法
print(f"{a} + {b} = {a + b}")

# 减法
print(f"{a} - {b} = {a - b}")

# 乘法
print(f"{a} × {b} = {a * b}")

# 除法（返回浮点数）
print(f"{a} ÷ {b} = {a / b}")

# 整除（返回整数，向下取整）
print(f"{a} // {b} = {a // b}")

# 取余（模运算）
print(f"{a} % {b} = {a % b}")

# 幂运算
print(f"{a} ** {b} = {a ** b}")

print()

# ==================== 2. 算术运算的实际应用 ====================
print("=" * 50)
print("2. 算术运算的实际应用")
print("=" * 50)

# 计算圆的面积和周长
radius = 5
pi = 3.14159
area = pi * radius ** 2
circumference = 2 * pi * radius
print(f"半径为{radius}的圆：")
print(f"  面积 = {area:.2f}")
print(f"  周长 = {circumference:.2f}")

# 温度转换：摄氏度转华氏度
celsius = 25
fahrenheit = celsius * 9 / 5 + 32
print(f"\n{celsius}°C = {fahrenheit}°F")

# 判断奇偶数
number = 17
if number % 2 == 0:
    print(f"{number}是偶数")
else:
    print(f"{number}是奇数")

print()

# ==================== 3. 比较运算符 ====================
print("=" * 50)
print("3. 比较运算符（返回布尔值）")
print("=" * 50)

x = 10
y = 20

# 等于
print(f"{x} == {y} : {x == y}")

# 不等于
print(f"{x} != {y} : {x != y}")

# 大于
print(f"{x} > {y} : {x > y}")

# 小于
print(f"{x} < {y} : {x < y}")

# 大于等于
print(f"{x} >= {y} : {x >= y}")

# 小于等于
print(f"{x} <= {y} : {x <= y}")

print()

# ==================== 4. 比较运算的实际应用 ====================
print("=" * 50)
print("4. 比较运算的实际应用")
print("=" * 50)

# 成绩判定
score = 85
print(f"分数：{score}")
print(f"是否及格（>=60）：{score >= 60}")
print(f"是否优秀（>=90）：{score >= 90}")
print(f"是否满分（==100）：{score == 100}")

# 年龄判断
age = 18
print(f"\n年龄：{age}")
print(f"是否成年（>=18）：{age >= 18}")
print(f"是否未成年（<18）：{age < 18}")

print()

# ==================== 5. 逻辑运算符 ====================
print("=" * 50)
print("5. 逻辑运算符")
print("=" * 50)

# and（与）：所有条件都为True才返回True
print("逻辑与（and）：")
print(f"True and True = {True and True}")
print(f"True and False = {True and False}")
print(f"False and False = {False and False}")

# or（或）：至少一个条件为True就返回True
print("\n逻辑或（or）：")
print(f"True or True = {True or True}")
print(f"True or False = {True or False}")
print(f"False or False = {False or False}")

# not（非）：取反
print("\n逻辑非（not）：")
print(f"not True = {not True}")
print(f"not False = {not False}")

print()

# ==================== 6. 逻辑运算的实际应用 ====================
print("=" * 50)
print("6. 逻辑运算的实际应用")
print("=" * 50)

# 多条件判断
age = 20
is_student = True
has_id = True

# and：同时满足多个条件
print(f"年龄：{age}，是学生：{is_student}，有证件：{has_id}")
print(f"是否可以享受学生优惠（成年且是学生）：{age >= 18 and is_student}")
print(f"是否可以入场（成年且有证件）：{age >= 18 and has_id}")

# or：满足任一条件
print(f"是否可以免费参观（学生或老人）：{is_student or age >= 60}")

# 组合使用
score = 75
attendance = 90
print(f"\n成绩：{score}，出勤率：{attendance}%")
print(f"是否通过课程（成绩>=60且出勤>=80）：{score >= 60 and attendance >= 80}")

print()

# ==================== 7. 赋值运算符 ====================
print("=" * 50)
print("7. 赋值运算符")
print("=" * 50)

# 基本赋值
x = 10
print(f"x = {x}")

# 加法赋值
x += 5  # 相当于 x = x + 5
print(f"x += 5 后，x = {x}")

# 减法赋值
x -= 3  # 相当于 x = x - 3
print(f"x -= 3 后，x = {x}")

# 乘法赋值
x *= 2  # 相当于 x = x * 2
print(f"x *= 2 后，x = {x}")

# 除法赋值
x /= 4  # 相当于 x = x / 4
print(f"x /= 4 后，x = {x}")

# 整除赋值
x = 20
x //= 3  # 相当于 x = x // 3
print(f"x //= 3 后，x = {x}")

# 取余赋值
x %= 5  # 相当于 x = x % 5
print(f"x %= 5 后，x = {x}")

# 幂赋值
x **= 3  # 相当于 x = x ** 3
print(f"x **= 3 后，x = {x}")

print()

# ==================== 8. 赋值运算的实际应用 ====================
print("=" * 50)
print("8. 赋值运算的实际应用")
print("=" * 50)

# 计数器
count = 0
print(f"初始计数：{count}")

count += 1
print(f"增加1次：{count}")

count += 1
print(f"再增加1次：{count}")

count += 3
print(f"增加3次：{count}")

# 累加求和
total = 0
total += 10
total += 20
total += 30
print(f"\n累加结果：{total}")

# 折扣计算
price = 100
print(f"原价：¥{price}")
price *= 0.8  # 打8折
print(f"8折后：¥{price}")

print()

# ==================== 9. 运算符优先级 ====================
print("=" * 50)
print("9. 运算符优先级")
print("=" * 50)

# 算术运算符优先级：** > * / // % > + -
result = 2 + 3 * 4
print(f"2 + 3 * 4 = {result}")  # 先乘后加

result = (2 + 3) * 4
print(f"(2 + 3) * 4 = {result}")  # 括号优先

result = 2 ** 3 * 4
print(f"2 ** 3 * 4 = {result}")  # 先幂次后乘法

# 逻辑运算符优先级：not > and > or
result = True or False and False
print(f"\nTrue or False and False = {result}")  # 先and后or

result = (True or False) and False
print(f"(True or False) and False = {result}")  # 括号优先

print()

# ==================== 10. 综合实战：成绩评定系统 ====================
print("=" * 50)
print("10. 综合实战：成绩评定系统")
print("=" * 50)

# 学生信息
name = "张三"
math_score = 85
english_score = 92
chinese_score = 78

# 计算总分和平均分
total_score = math_score + english_score + chinese_score
average_score = total_score / 3

print(f"学生姓名：{name}")
print(f"数学成绩：{math_score}")
print(f"英语成绩：{english_score}")
print(f"语文成绩：{chinese_score}")
print(f"总分：{total_score}")
print(f"平均分：{average_score:.2f}")

# 判断是否及格（所有科目>=60）
is_pass = math_score >= 60 and english_score >= 60 and chinese_score >= 60
print(f"是否及格：{is_pass}")

# 判断是否优秀（平均分>=85）
is_excellent = average_score >= 85
print(f"是否优秀：{is_excellent}")

# 判断是否有单科满分
has_full_score = math_score == 100 or english_score == 100 or chinese_score == 100
print(f"是否有单科满分：{has_full_score}")

print()

# ==================== 总结 ====================
print("=" * 50)
print("✨ 运算符总结")
print("=" * 50)
print("""
1. 算术运算符：+ - * / // % **
2. 比较运算符：== != > < >= <=（返回布尔值）
3. 逻辑运算符：and or not（用于组合条件）
4. 赋值运算符：= += -= *= /= //= %= **=
5. 优先级：括号 > 幂运算 > 乘除 > 加减 > 比较 > 逻辑
6. 遇到复杂表达式时，使用括号明确优先级
""")
print("=" * 50)

